Introducción a la programación orientada a objetos (POO)

Introducción

Modularidad: es la posibilidad de subdividir una aplicación en módulos más pequeños, donde cada uno debe ser tan independiente como sea posible del resto de módulos.

Módulo: podría ser cualquier elemento funcional dentro del sistema, identificable y relevante (Subrutinas, librerías, clases, etc.)

Un sistema diseñado de forma modular es la unión de un conjunto de módulos interconectados, donde cada módulo realizará una tarea bien definida e independiente de las demás.

La POO realiza la modularidad a través del concepto de clase.

Un principio fundamental del diseño modular es:

Acoplamiento: es la interdependencia entre módulos. Debemos buscar que el acoplamiento entre nuestros módulos sea mínimo. Un acoplamiento bajo indica un sistema bien participando y puede obtenerse:

Una forma de debilitar el acoplamiento es haciendo que un módulo oculte su implementación interna y no la haga visible al exterior.

La interface del módulo será la única vía desde el exterior para usar el módulo.

Las ventajas de un bajo acoplamiento son:

Cohesión: es el grado de relación que tienen los elementos internos dentro del módulo. El objetivo es diseñar módulos con una alta cohesión, cuyos elementos estén fuertemente relacionados unos con otros.

Paradigma de la POO

Es una manera de estructurar los componentes de un sistema de software de forma modular. El objeto es el módulo que organiza el código.

Los objetos son manipulados por unas funciones (métodos) y se comunican entre sí mediante un protocolo de intercambio de mensajes.

Objeto: módulo autocontenido de datos y operaciones que representa una entidad en el dominio del problema.

La POO divide el proceso de construcción del software en dos fases:

Método: es la implementación de una operación que puede ser requerido a cualquier objeto de la clase.

Los métodos muestran o definen parte del comportamiento de los objetos representados por la clase. El conjunto de métodos constituye la interface del objeto.

Estado: es el valor que tienen los atributos de un objeto en un instante del tiempo concreto.

Clase

Atributos: características que definen a la clase.

Para definir una clase utilizaremos la palabra reservada class .

Los nombres de las clases siempre empiezan con mayúscula.

Primero definimos el nivel de privacidad:

Ejemplo:

Constructor: tiene como objetivo inicializar el objeto cuando se instancia la clase:

Ejemplo:

Los getters son métodos que nos devuelven un valor cuando lo solicitamos a una clase con atributos privados.

Ejemplo:

Los setters son métodos que sirven para controlar el valor de nuestros atributos.

Ejemplo:

Una clase quedará definida de la siguiente manera:

Tarjetas CRC (Class Responsability Collaboration)

Las tarjetas CRC constituyen una técnica para diseñar clases a través de la identificación de colaboraciones y responsabilidades presentes en una clase de objetos.

Son útiles en etapas tempranas de desarrollo, en donde se están identificando las clases en el dominio del problema.

Se componen de las siguientes partes:

Nombre de la clase
Responsabilidad de la clase
Colaboradores de la clase

 

Ejemplo:

Médico
Responsabilidad
Colaboradores
- Atender pacientes
- Diagnosticar pacientes
- Pacientes
- Diagnóstico

 

Paciente
Responsabilidad
Colaboradores
- Gaurdar datos paciente
- Guardar diagnóstico paciente
- Diagnóstico

 

Diagnóstico
Responsabilidad
Colaboradores
- Gaurdar datos de diagnóstico
- Guardar datos de tratamiento
- Tratamiento

 

Modelado con objetos: